home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-03-09 | 45.3 KB | 1,520 lines |
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of shell archive."
- # Contents: README2 Patches01
- # Wrapped by billr@saab on Tue Mar 8 10:36:52 1988
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f README2 -a "${1}" != "-c" ; then
- echo shar: Will not over-write existing file \"README2\"
- else
- echo shar: Extracting \"README2\" \(733 characters\)
- sed "s/^X//" >README2 <<'END_OF_README2'
- XThe latest qix version now supports color.
- XThanx to:
- XIan Donaldson <uunet.uu.net!munnari!koel.rmit.oz.au!rcodi>
- X
- XIn addition to Ian's changes:
- X
- XNew command line option "-s timeout" where timeout is in milliseconds.
- XMachines with a graphics processor run significantly faster and the player
- Xhasn't a chance. I've noticed that running with a gp, -s 50000 should
- Xbe sufficient.
- X
- XThe program has been speeded up slightly -- it was too easy. The qix is
- Xmore aggressive and faster beginning at the second screen.
- X
- XThe program figures out whether you're running in color and if so, it
- Xwill speed up a little for those without gp's so that it runs about
- Xthe same speed as a sun3/50.
- X
- XThe scorefile is created if it doesn't already exist.
- X
- END_OF_README2
- if test 733 -ne `wc -c <README2`; then
- echo shar: \"README2\" unpacked with wrong size!
- fi
- # end of overwriting check
- fi
- if test -f Patches01 -a "${1}" != "-c" ; then
- echo shar: Will not over-write existing file \"Patches01\"
- else
- echo shar: Extracting \"Patches01\" \(42908 characters\)
- sed "s/^X//" >Patches01 <<'END_OF_Patches01'
- X*** OLD/Makefile Tue Jan 12 15:53:56 1988
- X--- Makefile Mon Mar 7 21:55:35 1988
- X***************
- X*** 6,19 ****
- X ICONS= joystick.lf joystick.rt joystick.up joystick.dn joystick.stop \
- X spark1.pr spark2.pr spark3.pr spark4.pr marker.cursor qix.icon \
- X mouse.rt.icon
- X CFLAGS= -O
- X LDFLAGS=
- X LIBES= -lsuntool -lsunwindow -lpixrect
- X
- X! qix.x: ${OBJS}
- X @echo loading...
- X @cc ${LDFLAGS} ${OBJS} ${LIBES} -o qix
- X
- X # qix with a recursive polygon file rather than iterative.
- X # If you use it you have to unlimit the stacksize in csh
- X # and check the code to make sure it's called right (it's old).
- X--- 6,37 ----
- X ICONS= joystick.lf joystick.rt joystick.up joystick.dn joystick.stop \
- X spark1.pr spark2.pr spark3.pr spark4.pr marker.cursor qix.icon \
- X mouse.rt.icon
- X+
- X+ # Change these to suit your installation
- X+
- X+ SCOREFILE=/usr/games/lib/qix.scores
- X+ BINDIR=/usr/people/argv/bin
- X+
- X CFLAGS= -O
- X LDFLAGS=
- X LIBES= -lsuntool -lsunwindow -lpixrect
- X
- X! all: qix
- X!
- X! qix: ${OBJS}
- X @echo loading...
- X @cc ${LDFLAGS} ${OBJS} ${LIBES} -o qix
- X
- X+ install: all
- X+ install -s -c -m 2711 -o games -g games qix ${BINDIR}
- X+ touch ${SCOREFILE}
- X+ chmod 660 ${SCOREFILE}
- X+ -chgrp games ${SCOREFILE}
- X+ -chown games ${SCOREFILE}
- X+
- X+ score.o:
- X+ cc $(CFLAGS) -DSCOREFILE=\"${SCOREFILE}\" -c score.c
- X+
- X # qix with a recursive polygon file rather than iterative.
- X # If you use it you have to unlimit the stacksize in csh
- X # and check the code to make sure it's called right (it's old).
- X***************
- X*** 25,27 ****
- X--- 43,86 ----
- X btoa > qix.tarmail
- X
- X shar: ; shar Makefile qix.h ${CFILES} ${ICONS} > qix.shar
- X+
- X+ clean:
- X+ rm -f qix $(OBJS)
- X+
- X+ lint:
- X+ lint -hbx $(CPPFLAGS) $(CFILES) $(LIBES)
- X+
- X+ depend: $(CFILES)
- X+ makedep -i $(CPPFLAGS) $(CFILES)
- X+
- X+ # DO NOT EDIT BELOW THIS LINE -- or it will disappear when you "make depend"
- X+
- X+ main.o: ./qix.icon
- X+ main.o: main.c
- X+
- X+ joystick.o: ./joystick.dn
- X+ joystick.o: ./joystick.lf
- X+ joystick.o: ./joystick.rt
- X+ joystick.o: ./joystick.stop
- X+ joystick.o: ./joystick.up
- X+ joystick.o: ./marker.cursor
- X+ joystick.o: ./mouse.rt.icon
- X+ joystick.o: joystick.c
- X+
- X+ sparks.o: ./spark1.pr
- X+ sparks.o: ./spark2.pr
- X+ sparks.o: ./spark3.pr
- X+ sparks.o: ./spark4.pr
- X+ sparks.o: sparks.c
- X+
- X+ regions.o: regions.c
- X+
- X+ qmove.o: qmove.c
- X+
- X+ polyfill.o: polyfill.c
- X+
- X+ polygon_area.o: polygon_area.c
- X+
- X+ polyfill_rec.o: polyfill_rec.c
- X+
- X+ score.o: score.c
- X*** OLD/joystick.c Tue Jan 12 17:30:52 1988
- X--- joystick.c Mon Mar 7 21:40:32 1988
- X***************
- X*** 108,114 ****
- X if (isdigit(ID)) {
- X debug = ID - '0';
- X msg("Debugging level set to %d", debug);
- X! sleep(2);
- X remove_msgs();
- X return;
- X } else
- X--- 108,114 ----
- X if (isdigit(ID)) {
- X debug = ID - '0';
- X msg("Debugging level set to %d", debug);
- X! Sleep(2);
- X remove_msgs();
- X return;
- X } else
- X***************
- X*** 164,172 ****
- X moving = DOWN;
- X when 'k' : case 'K' : case KEY_RIGHT(8) :
- X moving = UP;
- X! when LOC_MOVE : break; /* let those thru! */
- X #ifdef DEBUG
- X! case '@' : no_qix_kill = !no_qix_kill; drawing = 0;
- X when '#' : clear_sparks();
- X when '+' : lives = min(lives+1, MAX_LIVES); update_score(); drawing = 0;
- X when '-' : lives = max(lives-1, 1); update_score(); drawing = 0;
- X--- 164,178 ----
- X moving = DOWN;
- X when 'k' : case 'K' : case KEY_RIGHT(8) :
- X moving = UP;
- X! when LOC_MOVE : ; /* let those thru! (break-- do nothing) */
- X! when 3 : /* CTRL(C) */
- X! drawing = 0;
- X! if (play_mode == REAL_PLAY) {
- X! lives = 0;
- X! change_life(DIE);
- X! }
- X #ifdef DEBUG
- X! when '@' : no_qix_kill = !no_qix_kill; drawing = 0;
- X when '#' : clear_sparks();
- X when '+' : lives = min(lives+1, MAX_LIVES); update_score(); drawing = 0;
- X when '-' : lives = max(lives-1, 1); update_score(); drawing = 0;
- X***************
- X*** 198,208 ****
- X
- X if (!is_alive && lives > 0) {
- X /* user has died and is waiting to start again */
- X! sleep(2);
- X change_life(LIVE);
- X stop_timer(); /* change_life restarts it */
- X msg("Ready?");
- X! sleep(2);
- X remove_msgs(0);
- X start_timer();
- X return;
- X--- 204,214 ----
- X
- X if (!is_alive && lives > 0) {
- X /* user has died and is waiting to start again */
- X! Sleep(2);
- X change_life(LIVE);
- X stop_timer(); /* change_life restarts it */
- X msg("Ready?");
- X! Sleep(2);
- X remove_msgs(0);
- X start_timer();
- X return;
- X***************
- X*** 281,287 ****
- X when SHOW_QIX :
- X remove_msgs(0);
- X msg("Your Enemies:");
- X! sleep(2);
- X time_left = 40;
- X when SHOW_SPARKS :
- X time_left = 90;
- X--- 287,293 ----
- X when SHOW_QIX :
- X remove_msgs(0);
- X msg("Your Enemies:");
- X! Sleep(2);
- X time_left = 40;
- X when SHOW_SPARKS :
- X time_left = 90;
- X***************
- X*** 298,304 ****
- X change_life(LIVE);
- X stop_timer();
- X msg("Enclose more than\n75%%\nof the play area for extra bonus.");
- X! sleep(2);
- X remove_msgs(0);
- X level = -2;
- X drawing = fast = 1;
- X--- 304,310 ----
- X change_life(LIVE);
- X stop_timer();
- X msg("Enclose more than\n75%%\nof the play area for extra bonus.");
- X! Sleep(2);
- X remove_msgs(0);
- X level = -2;
- X drawing = fast = 1;
- X***************
- X*** 308,322 ****
- X when SHOW_QIX :
- X move_qix();
- X if (time_left == 1) {
- X! pw_text(draw_win, 200,200,PIX_SRC,big_font, "The qix.");
- X! sleep(2);
- X }
- X when SHOW_SPARKS :
- X move_sparks();
- X if (time_left == 1) {
- X! pw_text(draw_win, 15, 110, PIX_SRC, big_font, "Sparx.");
- X! pw_text(draw_win,625, 110, PIX_SRC, big_font, "Sparx.");
- X! sleep(2);
- X }
- X when SHOW_FUSE :
- X /* after the pw_text, this moves into spiral death trap */
- X--- 314,335 ----
- X when SHOW_QIX :
- X move_qix();
- X if (time_left == 1) {
- X! pw_putattributes(draw_win, &text_mask);
- X! pw_text(draw_win, 200,200,PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, "The qix.");
- X! Sleep(2);
- X }
- X when SHOW_SPARKS :
- X move_sparks();
- X if (time_left == 1) {
- X! pw_putattributes(draw_win, &text_mask);
- X! pw_text(draw_win, 15, 110,
- X! PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, "Sparx.");
- X! pw_text(draw_win,625, 110,
- X! PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, "Sparx.");
- X! Sleep(2);
- X }
- X when SHOW_FUSE :
- X /* after the pw_text, this moves into spiral death trap */
- X***************
- X*** 323,334 ****
- X switch (time_left) {
- X when 230 :
- X drawing = 0;
- X pw_text(draw_win,
- X convert_x(pen_x - 7), convert_y(pen_y + 7),
- X! PIX_SRC, big_font, "The fuse.");
- X when 80 :
- X pw_text(draw_win, 265, 445,
- X! PIX_SRC, big_font, "The Spiral Death Trap.");
- X case 200 : case 240 : case 40 : case 20 :
- X moving = LEFT, drawing = 1;
- X when 110 : case 55 : case 30 : moving = RIGHT;
- X--- 336,351 ----
- X switch (time_left) {
- X when 230 :
- X drawing = 0;
- X+ pw_putattributes(draw_win, &text_mask);
- X pw_text(draw_win,
- X convert_x(pen_x - 7), convert_y(pen_y + 7),
- X! PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, "The fuse.");
- X when 80 :
- X+ pw_putattributes(draw_win, &text_mask);
- X pw_text(draw_win, 265, 445,
- X! PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, "The Spiral Death Trap.");
- X case 200 : case 240 : case 40 : case 20 :
- X moving = LEFT, drawing = 1;
- X when 110 : case 55 : case 30 : moving = RIGHT;
- X***************
- X*** 342,348 ****
- X goto movit;
- X } else if (region) {
- X move_fuse(fuse = NULL);
- X! rm_cur_line(PIX_SRC);
- X }
- X when SHOW_POINTS : {
- X char buf[5];
- X--- 359,365 ----
- X goto movit;
- X } else if (region) {
- X move_fuse(fuse = NULL);
- X! rm_cur_line(PIX_SRC|PIX_COLOR(BORDER_COLOR));
- X }
- X when SHOW_POINTS : {
- X char buf[5];
- X***************
- X*** 358,371 ****
- X when 250 : case 130 : moving = RIGHT;
- X when 230 : case 90 : moving = DOWN;
- X when 210 : drawing = 0, moving = RIGHT;
- X pw_text(draw_win,
- X convert_x(pen_x - 12), convert_y(pen_y - 25),
- X! PIX_SRC, big_font, sprintf(buf, "%d", score));
- X when 49 : /* make sure region is closed */
- X msg("Use RIGHT mouse button to STOP movement.");
- X pw_text(draw_win,
- X convert_x(pen_x - 12), convert_y(pen_y - 25),
- X! PIX_SRC, big_font, sprintf(buf, "%d", score));
- X when 15 : drawing = 0, moving = RIGHT;
- X }
- X goto movit; /* avoid moving qix and sparks */
- X--- 375,392 ----
- X when 250 : case 130 : moving = RIGHT;
- X when 230 : case 90 : moving = DOWN;
- X when 210 : drawing = 0, moving = RIGHT;
- X+ pw_putattributes(draw_win, &text_mask);
- X pw_text(draw_win,
- X convert_x(pen_x - 12), convert_y(pen_y - 25),
- X! PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, sprintf(buf, "%d", score));
- X when 49 : /* make sure region is closed */
- X msg("Use RIGHT mouse button to STOP movement.");
- X+ pw_putattributes(draw_win, &text_mask);
- X pw_text(draw_win,
- X convert_x(pen_x - 12), convert_y(pen_y - 25),
- X! PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, sprintf(buf, "%d", score));
- X when 15 : drawing = 0, moving = RIGHT;
- X }
- X goto movit; /* avoid moving qix and sparks */
- X***************
- X*** 493,500 ****
- X board[pen_x][pen_y] |= CL_LN_DN;
- X board[x][y] |= CL_LN_UP;
- X }
- X draw(convert_x(x), convert_y(y),
- X! convert_x(pen_x), convert_y(pen_y), PIX_SRC);
- X if (!region) {
- X saved_edge = old_value;
- X add_to_line(pen_x, pen_y);
- X--- 514,523 ----
- X board[pen_x][pen_y] |= CL_LN_DN;
- X board[x][y] |= CL_LN_UP;
- X }
- X+ pw_putattributes(draw_win, &border_mask);
- X draw(convert_x(x), convert_y(y),
- X! convert_x(pen_x), convert_y(pen_y),
- X! PIX_SRC|PIX_COLOR(BORDER_COLOR));
- X if (!region) {
- X saved_edge = old_value;
- X add_to_line(pen_x, pen_y);
- X***************
- X*** 518,524 ****
- X }
- X } else
- X level++;
- X! sleep(3);
- X clear_board(); /* removes msgs also */
- X change_life(LIVE);
- X stop_timer();
- X--- 541,547 ----
- X }
- X } else
- X level++;
- X! Sleep(3);
- X clear_board(); /* removes msgs also */
- X change_life(LIVE);
- X stop_timer();
- X***************
- X*** 526,532 ****
- X level++;
- X if (level == 0) {
- X msg("Split the 2 qix to advance score multiplier.");
- X! sleep(2);
- X remove_msgs(0);
- X }
- X start_timer();
- X--- 549,555 ----
- X level++;
- X if (level == 0) {
- X msg("Split the 2 qix to advance score multiplier.");
- X! Sleep(2);
- X remove_msgs(0);
- X }
- X start_timer();
- X***************
- X*** 551,561 ****
- X moving == UP? &joystick_up :
- X moving == DOWN? &joystick_down :
- X moving == STOP? &joystick_stop : &ready_icon;
- X pw_rop(joystick_win,
- X! BOARD_WIDTH_IN_PIXELS/2-32, 2, 64, 64, PIX_SRC, image, 0,0);
- X! pw_rop(joystick_win, 100,32, 16,23, PIX_SRC,
- X (drawing && fast)? &ms_fast_on : &ms_fast_off, 0, 0);
- X! pw_rop(joystick_win, 150,32, 16,23, PIX_SRC,
- X (drawing && !fast)? &ms_slow_on : &ms_slow_off, 0, 0);
- X }
- X
- X--- 574,586 ----
- X moving == UP? &joystick_up :
- X moving == DOWN? &joystick_down :
- X moving == STOP? &joystick_stop : &ready_icon;
- X+ pw_putattributes(joystick_win, &border_mask);
- X pw_rop(joystick_win,
- X! BOARD_WIDTH_IN_PIXELS/2-32, 2, 64, 64, PIX_SRC|PIX_COLOR(BORDER_COLOR),
- X! image, 0,0);
- X! pw_rop(joystick_win, 100,32, 16,23, PIX_SRC|PIX_COLOR(BORDER_COLOR),
- X (drawing && fast)? &ms_fast_on : &ms_fast_off, 0, 0);
- X! pw_rop(joystick_win, 150,32, 16,23, PIX_SRC|PIX_COLOR(BORDER_COLOR),
- X (drawing && !fast)? &ms_slow_on : &ms_slow_off, 0, 0);
- X }
- X
- X*** OLD/main.c Tue Jan 12 17:09:06 1988
- X--- main.c Mon Mar 7 21:45:09 1988
- X***************
- X*** 3,12 ****
- X * Appearance ONLY shamelessly stolen from the real video game wonderfully
- X * and admirably written by individual(s) unknown at Taito Corp (I think).
- X *
- X! * Copyright 1987 by Dan Heller (island!argv@sun.com or argv@spam.istc.sri.com)
- X *
- X * Various polygon filling routines written by
- X! * -- Dan "Sky" Shultz (island!sky@sun.com) and
- X * -- Don Hatch (splat%ucscb@ucscc.ucsc.edu [fall, 1987])
- X * additional help (general debugging, recursive polyfill)
- X *
- X--- 3,14 ----
- X * Appearance ONLY shamelessly stolen from the real video game wonderfully
- X * and admirably written by individual(s) unknown at Taito Corp (I think).
- X *
- X! * Copyright 1987 by Dan Heller
- X! * island!argv@sun.com
- X! * dheller@dheller@ucbcory.berkeley.edu
- X *
- X * Various polygon filling routines written by
- X! * -- Dan "Sky" Shultz
- X * -- Don Hatch (splat%ucscb@ucscc.ucsc.edu [fall, 1987])
- X * additional help (general debugging, recursive polyfill)
- X *
- X***************
- X*** 33,38 ****
- X--- 35,46 ----
- X
- X int (*old_repaint_func)();
- X
- X+ int qix_mask = 0x7;
- X+ int text_mask = TEXT_COLOR;
- X+ int fast_draw_mask = FAST_DRAW_COLOR;
- X+ int slow_draw_mask = SLOW_DRAW_COLOR;
- X+ int border_mask = BORDER_COLOR;
- X+ int all_mask = 0xff;
- X
- X redraw(args)
- X {
- X***************
- X*** 51,57 ****
- X (void) signal(SIGSEGV, catch);
- X (void) signal(SIGXCPU, catch);
- X
- X- #ifdef DEBUG
- X /*
- X * specify debug levels "-d level"
- X * a level of 2 prints polygon fill info. 4 disables spark-generation
- X--- 59,64 ----
- X***************
- X*** 58,64 ****
- X * but doesn't kill current sparks. debug level 1 does prints things...
- X */
- X while (*++newargv)
- X! if (!strcmp(*newargv, "-q"))
- X no_qix_kill = 1;
- X else if (!strcmp(*newargv, "-d"))
- X debug = (*++newargv) ? atoi(*newargv) : 1;
- X--- 65,79 ----
- X * but doesn't kill current sparks. debug level 1 does prints things...
- X */
- X while (*++newargv)
- X! if (!strcmp(*newargv, "-s"))
- X! if (!*++newargv)
- X! puts("usage: qix [-s timeout] (in milliseconds)"), exit(1);
- X! else {
- X! if ((interval = atoi(*newargv)) < 15000 || interval > 60000)
- X! puts("delay must be between 15000 and 60000"), exit(1);
- X! }
- X! #ifdef DEBUG
- X! else if (!strcmp(*newargv, "-q"))
- X no_qix_kill = 1;
- X else if (!strcmp(*newargv, "-d"))
- X debug = (*++newargv) ? atoi(*newargv) : 1;
- X***************
- X*** 79,84 ****
- X--- 94,101 ----
- X 0);
- X
- X draw_win = canvas_pixwin(Draw);
- X+ if (interval == 0)
- X+ interval = (draw_win->pw_pixrect->pr_depth == 8)? 35000 : 50000;
- X window_set(Draw,
- X CANVAS_FAST_MONO, TRUE,
- X WIN_CONSUME_PICK_EVENTS,
- X***************
- X*** 99,104 ****
- X--- 116,165 ----
- X 0);
- X joystick_win = canvas_pixwin(Joystick);
- X
- X+ /*
- X+ * set color map segment name and load color map
- X+ */
- X+ {
- X+ static char cmsname[CMS_NAMESIZE];
- X+ static char r[QIX_CMS_SIZE],g[QIX_CMS_SIZE],b[QIX_CMS_SIZE];
- X+
- X+ (void) strcpy(cmsname, QIX_CMS_NAME);
- X+ pw_setcmsname(draw_win, cmsname);
- X+ pw_setcmsname(joystick_win, cmsname);
- X+
- X+ /* blueish */
- X+ r[FAST_DRAW_COLOR] = 40;
- X+ g[FAST_DRAW_COLOR] = 170;
- X+ b[FAST_DRAW_COLOR] = 213;
- X+
- X+ /* brownish */
- X+ r[SLOW_DRAW_COLOR] = 213;
- X+ g[SLOW_DRAW_COLOR] = 170;
- X+ b[SLOW_DRAW_COLOR] = 0;
- X+
- X+ /* dark something */
- X+ r[TEXT_COLOR] = 0;
- X+ g[TEXT_COLOR] = 80;
- X+ b[TEXT_COLOR] = 190;
- X+
- X+ /* red sparks when not aggressive */
- X+ r[SPARKS_COLOR] = 255;
- X+ g[SPARKS_COLOR] = 0;
- X+ b[SPARKS_COLOR] = 0;
- X+
- X+ /* blue sparks when aggressive */
- X+ r[AGGR_SPARK_COLOR] = 0;
- X+ g[AGGR_SPARK_COLOR] = 0;
- X+ b[AGGR_SPARK_COLOR] = 255;
- X+
- X+ cms_rainbowsetup(&r[QIX_COLOR_BASE],
- X+ &g[QIX_COLOR_BASE],
- X+ &b[QIX_COLOR_BASE]);
- X+
- X+ pw_putcolormap(draw_win, 0, QIX_CMS_SIZE, r, g, b);
- X+ pw_putcolormap(joystick_win, 0, QIX_CMS_SIZE, r, g, b);
- X+ }
- X+
- X window_fit(frame);
- X
- X if (!(small_font = pf_open("/usr/people/argv/computer.14")) &&
- X***************
- X*** 120,126 ****
- X pw_text(joystick_win, 92, 24, PIX_SRC, small_font, "Fast Slow");
- X play_mode = SHOW_SCORES;
- X update_score();
- X! score_board(TRUE, FALSE);
- X time_left = 100; /* timeout before next demo mode switch */
- X (void) signal(SIGALRM, move_pen);
- X old_repaint_func = (int(*)())window_get(frame, CANVAS_REPAINT_PROC);
- X--- 181,187 ----
- X pw_text(joystick_win, 92, 24, PIX_SRC, small_font, "Fast Slow");
- X play_mode = SHOW_SCORES;
- X update_score();
- X! (void) score_board(TRUE, FALSE);
- X time_left = 100; /* timeout before next demo mode switch */
- X (void) signal(SIGALRM, move_pen);
- X old_repaint_func = (int(*)())window_get(frame, CANVAS_REPAINT_PROC);
- X***************
- X*** 141,152 ****
- X pen_x = (BOARD_WIDTH-1)/2, pen_y = BOARD_HEIGHT-1;
- X remove_msgs(1);
- X
- X /* give left->right sweeping effect like the real game */
- X for (x = 0; x < BOARD_WIDTH_IN_PIXELS; x++)
- X draw(x, 0, x, BOARD_HEIGHT_IN_PIXELS-1, PIX_CLR);
- X
- X box(convert_x(0), convert_y(0),
- X! convert_x(BOARD_WIDTH-1), convert_y(BOARD_HEIGHT-1), PIX_SRC);
- X
- X /* clear the interior of the board */
- X for (x = 1; x < BOARD_WIDTH-1; x++)
- X--- 202,217 ----
- X pen_x = (BOARD_WIDTH-1)/2, pen_y = BOARD_HEIGHT-1;
- X remove_msgs(1);
- X
- X+ pw_putattributes(draw_win, &all_mask);
- X+
- X /* give left->right sweeping effect like the real game */
- X for (x = 0; x < BOARD_WIDTH_IN_PIXELS; x++)
- X draw(x, 0, x, BOARD_HEIGHT_IN_PIXELS-1, PIX_CLR);
- X
- X+ pw_putattributes(draw_win, &border_mask);
- X box(convert_x(0), convert_y(0),
- X! convert_x(BOARD_WIDTH-1), convert_y(BOARD_HEIGHT-1),
- X! PIX_SRC|PIX_COLOR(BORDER_COLOR));
- X
- X /* clear the interior of the board */
- X for (x = 1; x < BOARD_WIDTH-1; x++)
- X***************
- X*** 194,200 ****
- X lives = 1;
- X else
- X lives = MAX_LIVES;
- X! clear_board(); /* resets pen_x, pen_y */
- X level = -2, score = 0;
- X } else {
- X extern int qix1_x0[], qix1_x1[], qix1_y0[], qix1_y1[];
- X--- 259,265 ----
- X lives = 1;
- X else
- X lives = MAX_LIVES;
- X! clear_board(); /* resets pen_x, pen_y (changes plane mask) */
- X level = -2, score = 0;
- X } else {
- X extern int qix1_x0[], qix1_x1[], qix1_y0[], qix1_y1[];
- X***************
- X*** 217,248 ****
- X drawing = FALSE;
- X if (level > 0) {
- X msg("All scores now\n%d times\ntheir original value.", level+1);
- X! sleep(3);
- X remove_msgs(0);
- X }
- X place_pen(); /* make pen appear */
- X }
- X
- X for (x = 0; x < 2; x++)
- X for (n = m; n >= 40 && n <= 300; n -= 5 * live_or_die)
- X box(pen_coord_x(pen_x)-n/2, pen_coord_y(pen_y)-n/2,
- X! pen_coord_x(pen_x)+n/2, pen_coord_y(pen_y)+n/2, XOR);
- X
- X if (live_or_die == DIE) {
- X is_alive = FALSE;
- X if (--lives <= 0) {
- X reset_joystick_win(TRUE);
- X msg("Game Over.");
- X! sleep(2);
- X /* if he got on the scoreboard, let him put his initials up */
- X if (play_mode == REAL_PLAY)
- X! score_board(FALSE, FALSE);
- X if (play_mode == SHOW_SPIRAL)
- X time_left = 50; /* demo mode comes after spiral death trap */
- X else {
- X- score_board(TRUE, FALSE);
- X play_mode = SHOW_SCORES;
- X! time_left = 100; /* show scores after demo mode or real play */
- X }
- X moving = NO_MOVE;
- X } else {
- X--- 282,318 ----
- X drawing = FALSE;
- X if (level > 0) {
- X msg("All scores now\n%d times\ntheir original value.", level+1);
- X! Sleep(3);
- X remove_msgs(0);
- X }
- X place_pen(); /* make pen appear */
- X }
- X
- X+ pw_putattributes(draw_win, &border_mask);
- X for (x = 0; x < 2; x++)
- X for (n = m; n >= 40 && n <= 300; n -= 5 * live_or_die)
- X box(pen_coord_x(pen_x)-n/2, pen_coord_y(pen_y)-n/2,
- X! pen_coord_x(pen_x)+n/2, pen_coord_y(pen_y)+n/2,
- X! XOR | PIX_COLOR(BORDER_COLOR));
- X
- X if (live_or_die == DIE) {
- X is_alive = FALSE;
- X if (--lives <= 0) {
- X+ int do_scores = TRUE;
- X reset_joystick_win(TRUE);
- X msg("Game Over.");
- X! Sleep(2);
- X /* if he got on the scoreboard, let him put his initials up */
- X if (play_mode == REAL_PLAY)
- X! do_scores = (score_board(FALSE, FALSE) == 0);
- X if (play_mode == SHOW_SPIRAL)
- X time_left = 50; /* demo mode comes after spiral death trap */
- X else {
- X play_mode = SHOW_SCORES;
- X! if (do_scores)
- X! (void) score_board(TRUE, FALSE), time_left = 300;
- X! else
- X! time_left = 100;
- X }
- X moving = NO_MOVE;
- X } else {
- X***************
- X*** 263,284 ****
- X int x;
- X
- X sprintf(buf, "Score: %6d", score);
- X! pw_text(joystick_win, 500, 22, PIX_SRC, big_font, buf);
- X! pw_text(joystick_win, 500, 22, PIX_SRC|PIX_DST, big_font, buf);
- X
- X if (play_mode != REAL_PLAY) {
- X! pw_text(draw_win, 105, 12, PIX_SRC, small_font,
- X "Click RIGHT mouse button or use <spacebar> to start new game.");
- X return;
- X }
- X
- X! pw_text(joystick_win, 500, 45, PIX_SRC, big_font, "Lives: ");
- X for (x = 0; x < MAX_LIVES; x++)
- X! pw_rop(joystick_win, 575+(x*20), 32, 16,16, (x < lives-1)?
- X! PIX_SRC:PIX_CLR, &pen_image, 0, 0);
- X sprintf(buf, "Filled: %d%%",(int)((double)area_closed/TOTAL_AREA*100));
- X! pw_text(draw_win, 280, 12, PIX_SRC, small_font, buf);
- X! pw_text(draw_win, 281, 12, PIX_SRC|PIX_DST, small_font, buf);
- X }
- X
- X Pixrect *save[15]; /* area under text to be redisplayed upon removal of text */
- X--- 333,362 ----
- X int x;
- X
- X sprintf(buf, "Score: %6d", score);
- X! pw_putattributes(joystick_win, &text_mask);
- X! pw_text(joystick_win, 500, 22, PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, buf);
- X! pw_text(joystick_win, 500, 22, PIX_SRC|PIX_DST|PIX_COLOR(TEXT_COLOR),
- X! big_font, buf);
- X
- X if (play_mode != REAL_PLAY) {
- X! pw_text(draw_win, 105, 12, PIX_SRC|PIX_COLOR(TEXT_COLOR), small_font,
- X "Click RIGHT mouse button or use <spacebar> to start new game.");
- X return;
- X }
- X
- X! pw_text(joystick_win, 500, 45, PIX_SRC|PIX_COLOR(TEXT_COLOR),
- X! big_font, "Lives: ");
- X! pw_putattributes(joystick_win, &border_mask);
- X for (x = 0; x < MAX_LIVES; x++)
- X! pw_rop(joystick_win, 575+(x*20), 32, 16,16, ((x < lives-1)?
- X! PIX_SRC:PIX_CLR)|PIX_COLOR(BORDER_COLOR), &pen_image, 0, 0);
- X!
- X sprintf(buf, "Filled: %d%%",(int)((double)area_closed/TOTAL_AREA*100));
- X! pw_putattributes(draw_win, &text_mask);
- X! pw_text(draw_win, 280, 12, PIX_SRC|PIX_COLOR(TEXT_COLOR), small_font, buf);
- X! pw_text(draw_win, 281, 12, PIX_SRC|PIX_DST|PIX_COLOR(TEXT_COLOR),
- X! small_font, buf);
- X }
- X
- X Pixrect *save[15]; /* area under text to be redisplayed upon removal of text */
- X***************
- X*** 286,291 ****
- X--- 364,370 ----
- X static int msgs; /* the number of text lines displayed on the board */
- X
- X /* print a message somewhere at the top of the playing board for two seconds */
- X+ /*VARARGS1*/
- X msg(fmt, args)
- X char *fmt;
- X {
- X***************
- X*** 298,303 ****
- X--- 377,383 ----
- X #ifdef DEBUG
- X puts(buf);
- X #endif DEBUG
- X+ pw_putattributes(draw_win, &text_mask);
- X do {
- X if (p2 = index(p, '\n'))
- X *p2 = 0;
- X***************
- X*** 313,321 ****
- X draw_win->pw_prretained, x_pos[msgs], y_pos[msgs]);
- X
- X pw_text(draw_win, x_pos[msgs], y_pos[msgs]+l_height(big_font)-5,
- X! PIX_SRC, big_font, p);
- X pw_text(draw_win, x_pos[msgs]+1, y_pos[msgs]+l_height(big_font)-5,
- X! PIX_SRC|PIX_DST, big_font, p);
- X } while (++msgs < 15 && p2 && *(p = p2+1));
- X }
- X
- X--- 393,401 ----
- X draw_win->pw_prretained, x_pos[msgs], y_pos[msgs]);
- X
- X pw_text(draw_win, x_pos[msgs], y_pos[msgs]+l_height(big_font)-5,
- X! PIX_SRC | PIX_COLOR(TEXT_COLOR), big_font, p);
- X pw_text(draw_win, x_pos[msgs]+1, y_pos[msgs]+l_height(big_font)-5,
- X! PIX_SRC|PIX_DST | PIX_COLOR(TEXT_COLOR), big_font, p);
- X } while (++msgs < 15 && p2 && *(p = p2+1));
- X }
- X
- X***************
- X*** 322,331 ****
- X /* remove all messages from the board and put back the images underneith */
- X remove_msgs(clearing)
- X {
- X while (msgs--) {
- X if (!clearing)
- X pw_rop(draw_win, x_pos[msgs], y_pos[msgs], x_save[msgs], y_save,
- X! PIX_SRC, save[msgs], 0, 0);
- X pr_destroy(save[msgs]);
- X }
- X msgs = 0;
- X--- 402,412 ----
- X /* remove all messages from the board and put back the images underneith */
- X remove_msgs(clearing)
- X {
- X+ pw_putattributes(draw_win, &text_mask);
- X while (msgs--) {
- X if (!clearing)
- X pw_rop(draw_win, x_pos[msgs], y_pos[msgs], x_save[msgs], y_save,
- X! PIX_SRC | PIX_COLOR(TEXT_COLOR), save[msgs], 0, 0);
- X pr_destroy(save[msgs]);
- X }
- X msgs = 0;
- X***************
- X*** 336,342 ****
- X stop_timer();
- X if (sig == SIGXCPU) {
- X msg("CPU timelimit exceeded. Go home and eat dinner.");
- X! sleep(2);
- X remove_msgs(0);
- X return;
- X }
- X--- 417,423 ----
- X stop_timer();
- X if (sig == SIGXCPU) {
- X msg("CPU timelimit exceeded. Go home and eat dinner.");
- X! Sleep(2);
- X remove_msgs(0);
- X return;
- X }
- X***************
- X*** 346,349 ****
- X--- 427,448 ----
- X else
- X fprintf(stderr, "Bus Error\n");
- X abort();
- X+ }
- X+
- X+ void
- X+ flush_events()
- X+ {
- X+ struct timeval dummy;
- X+ Event event;
- X+ int readfd = 1 << (int)window_get(Draw, WIN_FD);
- X+
- X+ timerclear(&dummy);
- X+ while (select(readfd+1, &readfd, 0, 0, &dummy) > 0)
- X+ window_read_event(Draw, &event);
- X+ }
- X+
- X+ Sleep(n)
- X+ {
- X+ sleep(n);
- X+ flush_events();
- X }
- X*** OLD/qix.h Wed Dec 23 17:50:58 1987
- X--- qix.h Mon Mar 7 21:28:36 1988
- X***************
- X*** 19,28 ****
- X #include <sys/time.h>
- X #include <ctype.h>
- X
- X #define when break;case
- X #define otherwise break;default
- X #define rrand random
- X- #define SCOREFILE "qix.scores"
- X
- X Frame frame;
- X Canvas Draw, Joystick;
- X--- 19,48 ----
- X #include <sys/time.h>
- X #include <ctype.h>
- X
- X+ #include <sunwindow/cms_rainbow.h>
- X+
- X+ /* qix uses 0..7 */
- X+ #define QIX_COLOR_BASE 0
- X+ #define TEXT_COLOR 8
- X+ #define SLOW_DRAW_COLOR 16
- X+ #define FAST_DRAW_COLOR 32
- X+ #define SPARKS_COLOR RED
- X+ #define AGGR_SPARK_COLOR BLUE
- X+ #define BORDER_COLOR 128
- X+
- X+ #define QIX_CMS_SIZE 256
- X+ #define QIX_CMS_NAME "QIX"
- X+
- X+ extern int text_mask;
- X+ extern int qix_mask;
- X+ extern int fast_draw_mask;
- X+ extern int slow_draw_mask;
- X+ extern int border_mask;
- X+ extern int all_mask;
- X+
- X #define when break;case
- X #define otherwise break;default
- X #define rrand random
- X
- X Frame frame;
- X Canvas Draw, Joystick;
- X***************
- X*** 44,51 ****
- X
- X struct itimerval timeout;
- X
- X #define start_timer() \
- X! timeout.it_value.tv_usec = 50000, setitimer(ITIMER_REAL, &timeout, NULL);
- X #define stop_timer() \
- X timerclear(&timeout.it_value), setitimer(ITIMER_REAL, &timeout, NULL);
- X
- X--- 64,72 ----
- X
- X struct itimerval timeout;
- X
- X+ long interval; /* 50000 for monochrome or 35000 for color displays */
- X #define start_timer() \
- X! timeout.it_value.tv_usec = interval, setitimer(ITIMER_REAL, &timeout, NULL);
- X #define stop_timer() \
- X timerclear(&timeout.it_value), setitimer(ITIMER_REAL, &timeout, NULL);
- X
- X***************
- X*** 105,113 ****
- X extern Pixrect pen_image;
- X
- X /* place_pen() macro XOR's the pen at its current coordinates */
- X! #define place_pen() pw_rop(draw_win, \
- X! pen_coord_x(pen_x), pen_coord_y(pen_y), \
- X! 16, 16, XOR, &pen_image, 0, 0)
- X
- X #define XOR (PIX_SRC^PIX_DST)
- X #define draw(x1,y1,x2,y2,OP) pw_vector(draw_win, x1,y1,x2,y2,(OP),1)
- X--- 126,136 ----
- X extern Pixrect pen_image;
- X
- X /* place_pen() macro XOR's the pen at its current coordinates */
- X! #define place_pen() \
- X! pw_putattributes(draw_win, &qix_mask), \
- X! pw_rop(draw_win, \
- X! pen_coord_x(pen_x), pen_coord_y(pen_y), \
- X! 16, 16, XOR|PIX_COLOR(VIOLET), &pen_image, 0, 0)
- X
- X #define XOR (PIX_SRC^PIX_DST)
- X #define draw(x1,y1,x2,y2,OP) pw_vector(draw_win, x1,y1,x2,y2,(OP),1)
- X*** OLD/qmove.c Mon Jan 11 14:53:04 1988
- X--- qmove.c Mon Mar 7 21:41:38 1988
- X***************
- X*** 38,44 ****
- X static index = 0, count;
- X int i, j;
- X
- X! if (level < 0 && count++ & 1)
- X return 0;
- X
- X if (qix1_x0[index] <= 0)
- X--- 38,44 ----
- X static index = 0, count;
- X int i, j;
- X
- X! if (level < -1 && count++ & 1)
- X return 0;
- X
- X if (qix1_x0[index] <= 0)
- X***************
- X*** 87,97 ****
- X i = (index + 1) % NLINES;
- X
- X /* erase old line */
- X draw(convert_x(qix1_x0[i]), convert_y(qix1_y0[i]),
- X! convert_x(qix1_x1[i]), convert_y(qix1_y1[i]), PIX_CLR);
- X if (level > -1)
- X draw(convert_x(qix2_x0[i]), convert_y(qix2_y0[i]),
- X! convert_x(qix2_x1[i]), convert_y(qix2_y1[i]), PIX_CLR);
- X
- X qix1_x0[i] = qix1_x0[index] + qix1_dx0;
- X qix1_y0[i] = qix1_y0[index] + qix1_dy0;
- X--- 87,102 ----
- X i = (index + 1) % NLINES;
- X
- X /* erase old line */
- X+ pw_putattributes(draw_win, &qix_mask);
- X draw(convert_x(qix1_x0[i]), convert_y(qix1_y0[i]),
- X! convert_x(qix1_x1[i]), convert_y(qix1_y1[i]),
- X! PIX_CLR|PIX_COLOR((index % CMS_RAINBOWSIZE) +
- X! QIX_COLOR_BASE));
- X if (level > -1)
- X draw(convert_x(qix2_x0[i]), convert_y(qix2_y0[i]),
- X! convert_x(qix2_x1[i]), convert_y(qix2_y1[i]),
- X! PIX_CLR|PIX_COLOR((index % CMS_RAINBOWSIZE) +
- X! QIX_COLOR_BASE));
- X
- X qix1_x0[i] = qix1_x0[index] + qix1_dx0;
- X qix1_y0[i] = qix1_y0[index] + qix1_dy0;
- X***************
- X*** 107,116 ****
- X index = i;
- X
- X draw(convert_x(qix1_x0[i]), convert_y(qix1_y0[i]),
- X! convert_x(qix1_x1[i]), convert_y(qix1_y1[i]), PIX_SRC);
- X if (level > -1)
- X draw(convert_x(qix2_x0[i]), convert_y(qix2_y0[i]),
- X! convert_x(qix2_x1[i]), convert_y(qix2_y1[i]), PIX_SRC);
- X return j;
- X }
- X
- X--- 112,125 ----
- X index = i;
- X
- X draw(convert_x(qix1_x0[i]), convert_y(qix1_y0[i]),
- X! convert_x(qix1_x1[i]), convert_y(qix1_y1[i]),
- X! PIX_SRC|PIX_COLOR((index % CMS_RAINBOWSIZE) +
- X! QIX_COLOR_BASE));
- X if (level > -1)
- X draw(convert_x(qix2_x0[i]), convert_y(qix2_y0[i]),
- X! convert_x(qix2_x1[i]), convert_y(qix2_y1[i]),
- X! PIX_SRC|PIX_COLOR((index % CMS_RAINBOWSIZE) +
- X! QIX_COLOR_BASE));
- X return j;
- X }
- X
- X***************
- X*** 125,134 ****
- X if (!(rrand() % 10)) {
- X register int r;
- X /* move at least one space, but not greater than "Speed" */
- X! *dx0 = (1 + (r = rrand())%(Speed-1)) * ((r&1) ? -1 : 1);
- X! *dy0 = (1 + (r = rrand())%(Speed-1)) * ((r&1) ? -1 : 1);
- X! *dx1 = (1 + (r = rrand())%(Speed-1)) * ((r&1) ? -1 : 1);
- X! *dy1 = (1 + (r = rrand())%(Speed-1)) * ((r&1) ? -1 : 1);
- X /* check that qix is moving towards player */
- X if (level > -2 && !(rrand() % (6 - level))) {
- X if (pen_x - x0 > 0 && *dx0 < 0)
- X--- 134,147 ----
- X if (!(rrand() % 10)) {
- X register int r;
- X /* move at least one space, but not greater than "Speed" */
- X! r = rrand();
- X! *dx0 = (1 + r%(Speed-1)) * ((r&1) ? -1 : 1);
- X! r = rrand();
- X! *dy0 = (1 + r%(Speed-1)) * ((r&1) ? -1 : 1);
- X! r = rrand();
- X! *dx1 = (1 + r%(Speed-1)) * ((r&1) ? -1 : 1);
- X! r = rrand();
- X! *dy1 = (1 + r%(Speed-1)) * ((r&1) ? -1 : 1);
- X /* check that qix is moving towards player */
- X if (level > -2 && !(rrand() % (6 - level))) {
- X if (pen_x - x0 > 0 && *dx0 < 0)
- X***************
- X*** 180,186 ****
- X if (!(++loop_count % 100)) {
- X #ifdef DEBUG
- X msg("bad news... loop count hit %d", loop_count);
- X! sleep(2);
- X remove_msgs(0);
- X #endif DEBUG
- X break;
- X--- 193,199 ----
- X if (!(++loop_count % 100)) {
- X #ifdef DEBUG
- X msg("bad news... loop count hit %d", loop_count);
- X! Sleep(2);
- X remove_msgs(0);
- X #endif DEBUG
- X break;
- X***************
- X*** 235,241 ****
- X return 0;
- X }
- X msg("The qix is trapped in a place it shouldn't have gotten to!");
- X! sleep(2);
- X remove_msgs(0);
- X return -1;
- X }
- X--- 248,254 ----
- X return 0;
- X }
- X msg("The qix is trapped in a place it shouldn't have gotten to!");
- X! Sleep(2);
- X remove_msgs(0);
- X return -1;
- X }
- X*** OLD/regions.c Mon Dec 21 22:15:46 1987
- X--- regions.c Mon Mar 7 21:41:47 1988
- X***************
- X*** 62,69 ****
- X return -1;
- X if (level > -1 && edge != n) {
- X msg("You split the two qix!");
- X! sleep(2);
- X! rm_cur_line(PIX_SRC); /* don't erase it, but free it up */
- X moving = STOP;
- X return 1;
- X }
- X--- 62,70 ----
- X return -1;
- X if (level > -1 && edge != n) {
- X msg("You split the two qix!");
- X! Sleep(2);
- X! /* don't erase it, but free it up */
- X! rm_cur_line(PIX_SRC|PIX_COLOR(BORDER_COLOR));
- X moving = STOP;
- X return 1;
- X }
- X***************
- X*** 108,114 ****
- X msg("can't fill region; over 10000 positions");
- X pen_x = region->x, pen_y = region->y;
- X msg("removing bad line ...(takes a while)");
- X! rm_cur_line(XOR); /* causes dotted line effect */
- X remove_msgs(0);
- X return -1;
- X }
- X--- 109,116 ----
- X msg("can't fill region; over 10000 positions");
- X pen_x = region->x, pen_y = region->y;
- X msg("removing bad line ...(takes a while)");
- X! /* causes dotted line effect */
- X! rm_cur_line(XOR|PIX_COLOR(BORDER_COLOR));
- X remove_msgs(0);
- X return -1;
- X }
- X***************
- X*** 258,265 ****
- X #endif
- X
- X toggle_sparks();
- X! pw_polygon_2(draw_win, 0,0,1, npts, new_area, PIX_SRC | PIX_DST,
- X! fast? &fast_grey : &slow_grey,0,0);
- X toggle_sparks();
- X
- X free(new_area);
- X--- 260,270 ----
- X #endif
- X
- X toggle_sparks();
- X! pw_putattributes(draw_win, fast ? &fast_draw_mask: &slow_draw_mask);
- X! pw_polygon_2(draw_win, 0,0,1, npts, new_area,
- X! PIX_SRC | PIX_DST | PIX_COLOR(fast ? FAST_DRAW_COLOR: SLOW_DRAW_COLOR),
- X! draw_win->pw_pixrect->pr_depth == 8? NULL :
- X! fast? &fast_grey : &slow_grey, 0, 0);
- X toggle_sparks();
- X
- X free(new_area);
- X***************
- X*** 278,284 ****
- X (moving == RIGHT)? "right" : "left",
- X (edge == UP)? "up" : (edge == DOWN)? "down" :
- X (edge == RIGHT)? "right" : "left");
- X! sleep(2);
- X remove_msgs(0);
- X }
- X #endif DEBUG
- X--- 283,289 ----
- X (moving == RIGHT)? "right" : "left",
- X (edge == UP)? "up" : (edge == DOWN)? "down" :
- X (edge == RIGHT)? "right" : "left");
- X! Sleep(2);
- X remove_msgs(0);
- X }
- X #endif DEBUG
- X***************
- X*** 285,290 ****
- X--- 290,296 ----
- X
- X rm_cur_line(op)
- X {
- X+ pw_putattributes(draw_win, &border_mask);
- X if (region)
- X board[region->x][region->y] = saved_edge;
- X while (cur_coord)
- X*** OLD/score.c Wed Dec 23 17:47:03 1987
- X--- score.c Mon Mar 7 21:42:04 1988
- X***************
- X*** 15,20 ****
- X--- 15,21 ----
- X extern char *sys_errlist[];
- X extern char *sprintf();
- X
- X+ /* returns whether the score file can be accessed */
- X score_board(Read, names)
- X {
- X struct scores *scp, *temp;
- X***************
- X*** 34,46 ****
- X #endif DEBUG
- X }
- X
- X! /* read the top ten file into the array and close the file */
- X! if ((fd = open(SCOREFILE, O_RDWR)) == -1 ||
- X read(fd, (char *) top_ten, sizeof(top_ten)) == -1) {
- X msg("No score file:\n%s", sys_errlist[errno]);
- X! sleep(2);
- X remove_msgs(0);
- X! return;
- X }
- X
- X /* Print the list */
- X--- 35,50 ----
- X #endif DEBUG
- X }
- X
- X! /* read the top ten file into the array and close the file. If it doesn't
- X! * open for read/write, it probably doesn't exit -- create it rw for all.
- X! */
- X! if ((fd = open(SCOREFILE, O_RDWR)) == -1 &&
- X! (Read || (fd = open(SCOREFILE, O_WRONLY, 0666))) ||
- X read(fd, (char *) top_ten, sizeof(top_ten)) == -1) {
- X msg("No score file:\n%s", sys_errlist[errno]);
- X! Sleep(2);
- X remove_msgs(0);
- X! return -1;
- X }
- X
- X /* Print the list */
- X***************
- X*** 75,80 ****
- X--- 79,85 ----
- X }
- X }
- X (void) close(fd);
- X+ return 0;
- X }
- X
- X char *
- X***************
- X*** 102,114 ****
- X msg("MIDDLE button to decrement one character.\n");
- X msg("Use RETURN or RIGHT button to enter each letter.");
- X msg("Use <backspace> key to go back one position.");
- X! pw_text(draw_win, x, y, PIX_SRC, big_font, sprintf(s, "%d", score));
- X x += 25 * l_width(big_font);
- X (void) strcpy(buf, "AAA");
- X
- X for (len = 0; len < 3;) {
- X! pw_text(draw_win, x - len*l_width(big_font), y, PIX_SRC, big_font, buf);
- X! pw_char(draw_win, x, y, PIX_SRC|PIX_DST, big_font, '_');
- X
- X do window_read_event(Draw, &event);
- X while (event.ie_code == LOC_MOVE || event.ie_code == LOC_DRAG ||
- X--- 107,122 ----
- X msg("MIDDLE button to decrement one character.\n");
- X msg("Use RETURN or RIGHT button to enter each letter.");
- X msg("Use <backspace> key to go back one position.");
- X! pw_text(draw_win, x, y, PIX_SRC|PIX_COLOR(TEXT_COLOR), big_font,
- X! sprintf(s, "%d", score));
- X x += 25 * l_width(big_font);
- X (void) strcpy(buf, "AAA");
- X
- X for (len = 0; len < 3;) {
- X! pw_text(draw_win, x - len*l_width(big_font), y,
- X! PIX_SRC|PIX_COLOR(TEXT_COLOR), big_font, buf);
- X! pw_char(draw_win, x, y, PIX_SRC|PIX_DST|PIX_COLOR(TEXT_COLOR),
- X! big_font, '_');
- X
- X do window_read_event(Draw, &event);
- X while (event.ie_code == LOC_MOVE || event.ie_code == LOC_DRAG ||
- X*** OLD/sparks.c Mon Sep 7 18:55:05 1987
- X--- sparks.c Mon Mar 7 21:42:25 1988
- X***************
- X*** 35,43 ****
- X * move left-right or up-down the formula given finds which icon to use to
- X * to guarantee that it's not the last one used.
- X */
- X! #define draw_spark(x, y) \
- X pw_rop(draw_win, pen_coord_x(x), pen_coord_y(y), 16,16, \
- X! XOR, spark_icons[(x + y) & 3], 0,0)
- X
- X struct spark {
- X int x, y, oldx, oldy;
- X--- 35,43 ----
- X * move left-right or up-down the formula given finds which icon to use to
- X * to guarantee that it's not the last one used.
- X */
- X! #define draw_spark(x, y, color) \
- X pw_rop(draw_win, pen_coord_x(x), pen_coord_y(y), 16,16, \
- X! XOR| PIX_COLOR(color), spark_icons[(x + y) & 3], 0,0)
- X
- X struct spark {
- X int x, y, oldx, oldy;
- X***************
- X*** 107,112 ****
- X--- 107,113 ----
- X register int x, y, sp, move_clockwise, came_from, dir;
- X /* new spark x and y coord */
- X
- X+ pw_putattributes(draw_win, &qix_mask);
- X for (sp = 0; sp < MAX_SPARKS; sp++) {
- X if (sparks[sp].x < 0)
- X break;
- X***************
- X*** 115,125 ****
- X * duced in pairs, the second spark will have the same coords and
- X * erase this mark. (clever, huh?)
- X */
- X! draw_spark(sparks[sp].x, sparks[sp].y);
- X x = sparks[sp].x, y = sparks[sp].y;
- X /* user bit the big one */
- X if (x == pen_x && y == pen_y) {
- X! draw_spark(sparks[sp].x, sparks[sp].y); /* redraw the spark */
- X change_life(DIE);
- X return -1;
- X }
- X--- 116,128 ----
- X * duced in pairs, the second spark will have the same coords and
- X * erase this mark. (clever, huh?)
- X */
- X! draw_spark(sparks[sp].x, sparks[sp].y,
- X! aggressive? AGGR_SPARK_COLOR : SPARKS_COLOR);
- X x = sparks[sp].x, y = sparks[sp].y;
- X /* user bit the big one */
- X if (x == pen_x && y == pen_y) {
- X! draw_spark(sparks[sp].x, sparks[sp].y,
- X! aggressive? AGGR_SPARK_COLOR : SPARKS_COLOR);
- X change_life(DIE);
- X return -1;
- X }
- X***************
- X*** 157,163 ****
- X box(convert_x(x)-10, convert_y(y)-10,
- X convert_x(x)+10, convert_y(y)+10, XOR);
- X msg("HALT! infinite-loop police! [y] (%d, %d)", x, y);
- X! sleep(2);
- X remove_msgs(0);
- X box(convert_x(x)-10, convert_y(y)-10,
- X convert_x(x)+10, convert_y(y)+10, XOR);
- X--- 160,166 ----
- X box(convert_x(x)-10, convert_y(y)-10,
- X convert_x(x)+10, convert_y(y)+10, XOR);
- X msg("HALT! infinite-loop police! [y] (%d, %d)", x, y);
- X! Sleep(2);
- X remove_msgs(0);
- X box(convert_x(x)-10, convert_y(y)-10,
- X convert_x(x)+10, convert_y(y)+10, XOR);
- X***************
- X*** 182,188 ****
- X
- X sparks[sp].oldx = sparks[sp].x, sparks[sp].oldy = sparks[sp].y;
- X /* draw the new spark */
- X! draw_spark(x, y);
- X sparks[sp].x = x, sparks[sp].y = y;
- X
- X if (x == pen_x && y == pen_y) {
- X--- 185,191 ----
- X
- X sparks[sp].oldx = sparks[sp].x, sparks[sp].oldy = sparks[sp].y;
- X /* draw the new spark */
- X! draw_spark(x, y, aggressive? AGGR_SPARK_COLOR : SPARKS_COLOR);
- X sparks[sp].x = x, sparks[sp].y = y;
- X
- X if (x == pen_x && y == pen_y) {
- X***************
- X*** 198,214 ****
- X /* give the only warning we can without a sound chip :-) */
- X fputc(7, stderr), fflush(stderr);
- X msg("Sparx are now aggressive.");
- X! sleep(2);
- X remove_msgs(0);
- X aggressive = 1;
- X }
- X! if (sp == MAX_SPARKS)
- X return 0; /* no sparks left to start, so don't do a countdown */
- X }
- X! start_spark(BOARD_WIDTH/2, 0, TRUE);
- X! start_spark(BOARD_WIDTH/2, 0, FALSE);
- X! draw(BORDER, 20, BOARD_WIDTH_IN_PIXELS-BORDER, 20, PIX_SRC);
- X! draw(BORDER, 21, BOARD_WIDTH_IN_PIXELS-BORDER, 21, PIX_SRC);
- X }
- X if (sp < MAX_SPARKS) {
- X /* calculate the percentage of the width of the board in pixels */
- X--- 201,224 ----
- X /* give the only warning we can without a sound chip :-) */
- X fputc(7, stderr), fflush(stderr);
- X msg("Sparx are now aggressive.");
- X! Sleep(2);
- X remove_msgs(0);
- X+ /* erase red sparks now or blue sparks will leave green */
- X+ toggle_sparks();
- X aggressive = 1;
- X+ /* now draw blue sparks */
- X+ toggle_sparks();
- X }
- X! if (sp == MAX_SPARKS) {
- X return 0; /* no sparks left to start, so don't do a countdown */
- X+ }
- X }
- X! start_spark(BOARD_WIDTH/2, 0);
- X! start_spark(BOARD_WIDTH/2, 0);
- X! draw(BORDER, 20, BOARD_WIDTH_IN_PIXELS-BORDER, 20,
- X! PIX_SRC|PIX_COLOR(SPARKS_COLOR));
- X! draw(BORDER, 21, BOARD_WIDTH_IN_PIXELS-BORDER, 21,
- X! PIX_SRC|PIX_COLOR(SPARKS_COLOR));
- X }
- X if (sp < MAX_SPARKS) {
- X /* calculate the percentage of the width of the board in pixels */
- X***************
- X*** 236,248 ****
- X static x = -1, y;
- X int n;
- X
- X if (x > -1)
- X! draw_spark(x, y);
- X if (!pos || !*pos) {
- X x = -1;
- X return 0;
- X }
- X! draw_spark((*pos)->x, (*pos)->y);
- X x = (*pos)->x, y = (*pos)->y;
- X
- X if ((*pos)->x == pen_x && (*pos)->y == pen_y) {
- X--- 246,260 ----
- X static x = -1, y;
- X int n;
- X
- X+ /* fuse is always red */
- X+ pw_putattributes(draw_win, &qix_mask);
- X if (x > -1)
- X! draw_spark(x, y, SPARKS_COLOR);
- X if (!pos || !*pos) {
- X x = -1;
- X return 0;
- X }
- X! draw_spark((*pos)->x, (*pos)->y, SPARKS_COLOR);
- X x = (*pos)->x, y = (*pos)->y;
- X
- X if ((*pos)->x == pen_x && (*pos)->y == pen_y) {
- X***************
- X*** 263,272 ****
- X {
- X int n;
- X
- X /* for each spark, if active, make it go away and reset to -1 */
- X for (n = 0; n < MAX_SPARKS; n++)
- X if (sparks[n].x > -1) {
- X! draw_spark(sparks[n].x, sparks[n].y);
- X sparks[n].oldx = sparks[n].x = -1;
- X }
- X draw(BORDER, 20, BOARD_WIDTH_IN_PIXELS-BORDER, 20, PIX_CLR);
- X--- 275,286 ----
- X {
- X int n;
- X
- X+ pw_putattributes(draw_win, &qix_mask);
- X /* for each spark, if active, make it go away and reset to -1 */
- X for (n = 0; n < MAX_SPARKS; n++)
- X if (sparks[n].x > -1) {
- X! draw_spark(sparks[n].x, sparks[n].y,
- X! aggressive? AGGR_SPARK_COLOR : SPARKS_COLOR);
- X sparks[n].oldx = sparks[n].x = -1;
- X }
- X draw(BORDER, 20, BOARD_WIDTH_IN_PIXELS-BORDER, 20, PIX_CLR);
- X***************
- X*** 282,290 ****
- X {
- X register int sp;
- X
- X for (sp = 0; sp < MAX_SPARKS; sp++) {
- X if (sparks[sp].x < 0)
- X break;
- X! draw_spark(sparks[sp].x, sparks[sp].y);
- X }
- X }
- X--- 296,306 ----
- X {
- X register int sp;
- X
- X+ pw_putattributes(draw_win, &qix_mask);
- X for (sp = 0; sp < MAX_SPARKS; sp++) {
- X if (sparks[sp].x < 0)
- X break;
- X! draw_spark(sparks[sp].x, sparks[sp].y,
- X! aggressive? AGGR_SPARK_COLOR : SPARKS_COLOR);
- X }
- X }
- END_OF_Patches01
- if test 42908 -ne `wc -c <Patches01`; then
- echo shar: \"Patches01\" unpacked with wrong size!
- fi
- # end of overwriting check
- fi
- echo shar: End of shell archive.
- exit 0
-